#ifndef __SERPENTD_TYPE_H__
#define __SERPENTD_TYPE_H__

// serpent type definitions(, definitions of alpha state !!!)

#define TRUE 0
#define FALSE 1

#ifdef DEBUG
	#define DEB(s) fprintf(stderr, "DEBUG: %s\n", s);
#else
	#define DEB(s)
#endif /* DEBUG */

typedef unsigned long	serpent_id;
typedef char 			serpent_data[1024];
typedef	char			serpent_name[30];
typedef int				serpent_bool;



typedef struct {
	serpent_id	serpent_mb_id;		// unique message block identifier, unique context: queue
	serpent_id 	serpent_m_id;		// unique message identifier, unique context: message block
	serpent_data	serpent_m_buff;		// data pad, fixed size is 1024 per message
	serpent_id	serpent_next_m_id;	// next message (same queue, same block)
} serpent_m;						// serpent_m = serpent Message

typedef struct {
	serpent_id	serpent_mb_id;		// unique message block identifier, unique context: queue
	serpent_id	serpent_q_id;		// unique queue identifier, unique context: global
} serpent_mb;					// serpent_mb = serpent Message Block

typedef struct {
	serpent_id	serpent_q_id;		// unique queue identifier, unique context: global
	serpent_name	serpent_q_name;		// queue name, max. 29 chars
	serpent_bool	serpent_q_empty;		// Is queue empty (All work done, none transactions)
	serpent_data	serpent_q_fs;		// FileSpace to handle queues in, "\0"  == memory
	char	x[3076];		// filling up for future properties, ACL, whatever
} serpent_q;						// serpent_q = serpent queue

typedef struct {
	serpent_q	serpent_q_enum[1024];// 
} serpent_mgr;					// serpent_mgr = serpent Manager

typedef struct {
	serpent_data serpent_run;			// SERPENTDRUN option
	serpent_data serpent_pid;			// SERPENTDPID option
	serpent_data serpent_uid;			// SERPENTDUID option
	serpent_data serpent_gid;			// SERPENTDGID option
} serpentd_conf;					// serpentd_conf = serpent deamon config

#endif /* __SERPENTD_TYPE_H__ */
